home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 001 / max.arc / MAX-REF.MSS < prev    next >
Text File  |  1986-04-05  |  43KB  |  957 lines

  1. @device<file>
  2. @make<Manual>
  3.  
  4. @comment<the following only for output to a file:>
  5. @Style(leftmargin 0.2 inch, rightmargin 0.2 inch)
  6.  
  7. @Style(PaperLength 11 inches,Paperwidth 8.2 inches)
  8. @Style(topmargin 1.1 inch, bottommargin 1.3 inch)>
  9. @Style(spacing 1.2 )
  10. @Style(Indentation 5)
  11. @pageheading(left "MAX 1.01", right "- @value(page) -")
  12.  
  13. @begin(TitlePage)
  14. @begin(TitleBox)
  15. @MajorHeading(MAX)
  16. @Heading(Reference Manual)
  17. @Subheading(PRELIMINARY VERSION)
  18.  
  19. Ivo Welch
  20.  
  21. @end(TitleBox)
  22. @Skip(2)
  23. @begin(Heading)
  24. New York, Schweinfurt
  25. @end(Heading)
  26. @value(Date)
  27.  
  28. @skip<3>
  29. @CopyrightNotice(I. Welch)
  30. @end(TitlePage)
  31.  
  32. @section<An Example>
  33.  
  34. Here is an example how  to use MAX.  It is  only at this point in  the
  35. documentation, so that  you can  satisfy your  initial curiousity  and
  36. play-drive.  If you are not yet burning to try out everything, but you
  37. would rather learn  something while  playing, run the  Tutorial (  see
  38. section @b<TUTORIAL>.  ) instead.   Do not be  disturbed if you  don't
  39. understand everything that is going on.  Just follow the  instructions
  40. and look at the action on the screen.
  41.  
  42. You type everything that is in bold-face. Explanations are provided in
  43. Italics. @b<@index[CTL-F]CTL-F> means: hold down the @i<CTRL> key  and
  44. press simultaneously  the  @i<F>  key;  @b<@index[ESC-F]ESC-F>  means:
  45. first press the @i<ESC> key, then press the @b<F> key.
  46.  
  47. @i<You start this example by typing @b<MAX \MAX\DOC\MAX.HLP> at the DOS prompt.> @index[DOS]
  48.  
  49. A>@b<MAX \MAX\DOC\MAX.HLP>
  50.  
  51. @i<You have just asked MAX to edit its own HELP file ( which can be in
  52. the connected or in  the \max\doc directory ).  You will not only  see
  53. normal characters, but a  few control-characters interspersed in  your
  54. file, recognisable by a light @b<^> followed by another character.>
  55.  
  56. @b<@index[CTL-F]CTL-F @index[CTL-F]CTL-F @index[CTL-F]CTL-F>
  57.  
  58. @i<Now the cursor has moved three characters to the right>
  59.  
  60. @b<@index[CTL-B]CTL-B @index[CTL-B]CTL-B>
  61.  
  62. @i<And it has moved back two characters>
  63.  
  64. @b<@index[CTL-P]CTL-P>
  65.  
  66. @i<You have just  made a mistake,  trying to retreat  a line when  the
  67. cursor was already on  the first line.  MAX  has detected your  error,
  68. and notifies you with a beep and a message that you can see for a  few
  69. seconds below the modeline.> @index[Error Messages] @index[Messages]
  70.  
  71. @b<@index[CTL-N]CTL-N>
  72.  
  73. @i<Now you have advanced one line>
  74.  
  75. @b<@index[CTL-P]CTL-P>
  76.  
  77. @i<Now you can retreat a line, sine you are not on line 1 anymore>
  78.  
  79. @b<@index[CTL-D]CTL-D>
  80.  
  81. @i<You have just deleted a character>
  82.  
  83. @b<@index[CTL-X CTL-B]CTL-X CTL-B>
  84.  
  85. @i<You  have  asked  MAX  to  allow   you  to  choose  a  new   buffer
  86. @index[Buffers] ( you want  to stop changing  this document, and  start
  87. changing another document  without loosing your  changes on the  first
  88. document ).  MAX displays you a small menu of available choices>
  89.  
  90. @b[<RETURN>]
  91.  
  92. @i<You prefer to  continue editing  your original  document. A  number
  93. would have chosen a new work place for editing another file.>
  94.  
  95. @b[<@index[CTL-X 2]CTL-X 2>]
  96.  
  97. @i<You have entered  "2 window  mode." This  allows you  to edit  your
  98. file, while looking at  another, and switching  easily back and  forth
  99. between editing files>
  100.  
  101. @b[<@index[CTL-X 1]CTL-X 1>]
  102.  
  103. @i<But you are not  too interested at this  for now. You would  rather
  104. get some help. Hold  all of the following  three keys: <SHIFT>  <CTRL>
  105. and Underline "_"> @index[HELP]
  106.  
  107. @b[@index[CTL-_]CTL-_]
  108.  
  109. @i<You are now looking at the help  menu. If you want, hit "1" to  get
  110. menu item 1. Then you  want to get out of  the HELP menu, so you  type
  111. the universal abort character...> @index[Aborting] @index[QUIT]
  112.  
  113. @b[@index[CTL-G]CTL-G]
  114.  
  115. @i<You are tired and decide  to stop this for  the time being, so  you
  116. decide to exit>
  117.  
  118. @b[@index[CTL-X CTL-Z]CTL-X CTL-Z @index[CTL-Y]CTL-Y]
  119.  
  120. Now you have seen how to interact with this strange computer  program.
  121. Your  curiosity  will  now  have  to  be  satisfied  now  by  learning
  122. systematically useful commands.
  123.  
  124. @Chapter<How to get started>
  125.  
  126. @Section<Backing up the Diskette>
  127.  
  128. You can back up MAX just like you would back up any other diskette:
  129.  
  130. Run the program named DISKCOPY from your DOS diskette, then insert MAX
  131. into one drive and a blank diskette into the other, and tell  DISKCOPY
  132. that you wish to copy from MAX's drive to the blank diskette's  drive.
  133. Make sure to always keep a backup copy of MAX in a safe place for your
  134. own rotection against program errors, your errors, or simply  magnetic
  135. media wearout.
  136.  
  137. @Section<The Use of this Manual>
  138.  
  139. This manual  serves not  only  two programs,  but also  two  purposes.
  140. Purpose One is to  tell you how  to go about learning  how to use  all
  141. these new  things:  the editor,  the  manual, the  documentation  etc.
  142. Purpose Two is to  serve you as  a reference manual,  to allow you  to
  143. explore new commands and to look up forgotten commands.
  144.  
  145. Hence, you will find a logical gap in this manual. You should overcome
  146. it by playing  and experimenting  with MAX on-line.   A built-in  help
  147. facility should help  you to  overcome problems on-line. @index[HELP]
  148.  
  149. As a final note,  if you have acess  to EMACS @index[EMACS] (MIT),  or
  150. any EMACS clone (like Epsilon [trademark of Lugaro Software] or  MINCE
  151. [trademark of Mark of the Unicorn]),  you may also find many  valuable
  152. hints how to use EMACS-style @index[EMACS Clones] editors in  general.
  153.  
  154. @Chapter<Learning how to use the Editor>
  155.  
  156. @Section<The Keyboard>
  157.  
  158. MAX's  allows   you   to   use  two   different   kinds   of   inputs:
  159. Menu/Functionkey Input, and Direct Sequences Input.
  160.  
  161. @Subsection<Menus and Functionkeys>
  162.  
  163. @index[Menus] Menu-style has the advantage  of being trivial to  learn
  164. and trivial to use,  but it depends heavily  on the computer that  you
  165. are using - and on MAX itself.  Other @index[EMACS Clones]  EMACS-like
  166. editors will not have this  menu system. Furthermore, menus force  you
  167. to go through several menu's even if you already know what you want to
  168. do. Therefore it usually takes more time to edit with menus than  with
  169. control-functions.
  170.  
  171. MAX uses IBM's non-alphanumeric keys  to allow you to input  commands.
  172. Some of the keys, like Home or Arrows always do what you would  expect
  173. them to do, namely moving the  cursor to another location.  Try  these
  174. keys ( they are on the numeric keypad ).
  175.  
  176. The functionkeys on  the left  side of  the main  keyboard can  change
  177. meaning.  The last line on the screen displays the actual function  of
  178. the functionkeys at any moment, and a brief description of which  menu
  179. is currently active.@index[Last  Line on Screen]  You can switch  from
  180. one menu to another by hitting the appropriate functionkey. A new menu
  181. will appear prompting you for different options.  F10 in the  original
  182. menu will turn off the last line (but still allow you to see the  name
  183. of the menu).  Using menus is  so trivial, that talking about it  will
  184. only add complications - try them out.
  185.  
  186. @Subsection<Keystroke Sequence Input>
  187.  
  188. Control-style has the advantage  that once you  know one EMACS  clone,
  189. @index[EMACS Clones] you can use all others.  You will also be able to
  190. work faster, since you command the editor directly, and don't have  to
  191. go through  many menus  over  and over  again.  I  strongly  recommend
  192. learning and using this method. @index[menus]
  193.  
  194. Every function that your editor can  perform for you corrosponds to  a
  195. specific keystroke sequence.   You will have  to memorize them,  which
  196. may give  you  some  initial  problems.  Some  of  the  commands  have
  197. "mnemonic" keystroke sequences:  they shall  remind you  of what  they
  198. actually  do.   For  instance,  @index[CTL-@b<F>]CTL-@b<F>  moves  the
  199. cursor @b<F>orward, @index[CTL-@b<B>]CTL-@b<B> moves it @b<B>ackwards.
  200. Unfortunately, since EMACS @index[EMACS]  has grown slowly over  time,
  201. many keystroke sequences are just convention, and bear no relationship
  202. to their actual meaning.
  203.  
  204. There are essentially  two types of  keystroke sequences: Control  and
  205. Escape Sequences.   The  main  difference is  that  control  sequences
  206. require you to hold down the control key and at the same time pressing
  207. another key ( denotated as @b<@index[CTL-*]CTL-*>, where * is the name
  208. of the other key ), while Escape Sequences require you to first  press
  209. <ESCAPE>   and    after   that    another   key    (   denotated    as
  210. @b<@index[ESC-*]ESC-*> ).
  211.  
  212. You can  look  up the  keystroke  sequence  of any  function,  or  the
  213. function of any  keystroke sequence  either on-line  in your  editor's
  214. help menu, or in this manual. @index[HELP] @index[Menus]
  215.  
  216. @Section<HELP and QUIT>
  217.  
  218. There are two functions that you should always remember:
  219.  
  220. @b<@index[CTL-_]CTL-_>, that is  holding down simultaneously  <SHIFT>,
  221. <CTRL> and <UNDERLINE> ( _ ), will enter the HELP menu.  Here you  can
  222. choose what you need to know. @index[HELP]
  223.  
  224. @b<@index[CTL-G]CTL-G> will quit whatever you are doing and  whereever
  225. you are. It will return you to the basic editing mode ( from which you
  226. can of course get help, exit etc ). @index[Aborting] @index[QUIT]
  227.  
  228. @b<Always remember these special functions !>
  229.  
  230. @Section<The Tutorial>
  231.  
  232. The time  has come  to start  the tutorial.   Type A>MAX  TUTORIAL.HLP,
  233. carefully read every page, and follow the instructions.
  234.  
  235. If you get confused, or you think you have done something wrong,  type
  236. @b<@index[CTL-X CTL-Z]CTL-X  CTL-Z @index[CTL-Y]CTL-Y>  and start  all
  237. over again.
  238.  
  239. Once you have finished  with the tutorial, you  should be able to  use
  240. MAX without any  problems for your  most basic needs.   Work with  the
  241. commands you know at this point  for about a week (until you  remember
  242. the  basic  keystroke  sequences  without  looking  at  any  reference
  243. anymore).
  244.  
  245. Once you know all  the basic functions by  heart, strive through  this
  246. manual, try out new commands, and see what they do. Preferably do this
  247. only on files that you don't  really need, since playing with  unknown
  248. commands gives  you  a  good  chance  of  erasing  or  modifying  work
  249. accidentally.
  250.  
  251. @Chapter<MAX Command Reference>
  252.  
  253. @Section<Modes>
  254.  
  255. @Subsection<Subject Modes>
  256.  
  257. @Paragraph<TEXT Mode>
  258.  
  259. This is the default mode.  All Text  Mode means is that TAB stops  are
  260. set every 8 characters, and that hitting TAB will simply place you  at
  261. the next such stop.
  262.  
  263. @Paragraph<Wrap Mode>
  264.  
  265. Wrap Mode can be toggled with @i<@index[ESC-X W]ESC-X W>. When you are
  266. in Wrap  mode, and  you press  <CR>,  starting a  new line,  MAX  will
  267. automatically   fill   the   paragraph   for   you.@index[Fill   Mode]
  268. @index[Paragraph] This is useful when you  want to type a lot of  text
  269. without even looking at the screen, and worrying about hitting <CR> at
  270. the right time.   When you finish  your paragraph, you  just type  one
  271. <CR>, and  MAX  will put  in  all  the necessary  line-breaks  in  the
  272. previous paragraph.
  273.  
  274. @Paragraph<Planned or Possible Modes>
  275.  
  276. There are presently no other  modes available. FORTRAN, BASIC,  PASCAL
  277. and SCRIPT mode are in planning stage, other modes may follow as well.
  278. Hitting <TAB> in any of these modes will indent automatically, i.e. MAX
  279. will move your cursor where your language dictates it should be.
  280.  
  281. @Subsection<Function Modes>
  282.  
  283. @Paragraph<Auto Save Mode>
  284.  
  285. Auto Save Mode will save your  work after every 400 typed  characters.
  286. It is not yet implemented.
  287.  
  288. @Paragraph<Insert v Overstrike Mode>
  289.  
  290. Insert Mode is the  default mode.@index[Defaults] New characters  will
  291. be inserted  at  the cursor  position;  everything behind  the  cursor
  292. position will be shifted to the right.  Similarly, hitting a <CR> will
  293. insert a new line, and shift all other lines down.  Insert Mode allows
  294. quicker editing than Overstrike mode,  but requires a (short) time  to
  295. get used to.
  296.  
  297. Overstrike Mode works like an ordinary typewriter. New characters will
  298. replace (  overstrike )  the old  characters.  The  advantage is  that
  299. typists who are only used to typewriters, will already know how to use
  300. it.  Overstrike Mode is not yet implemented.
  301.  
  302. @Paragraph<Keep Mode>
  303.  
  304. Keep Mode will  force MAX to  remember what you  were editing when  you
  305. exit. When you reenter MAX, MAX will look up what it was editing before,
  306. re-visit these files,  and position  the cursor where  it was  before.
  307. This can be quite useful if you are working on a big project, changing
  308. one little part, recompiling, changing again, and so on. Keep Mode  is
  309. not yet implemented.
  310.  
  311. @Section<Explanation of Commands by Subject>
  312.  
  313. @Subsection<Using the Built-In Menu>
  314.  
  315. Please  refer  to  the   section  on  keyboard  usage.   @index[Menus]
  316. @index[Last Line on Screen]
  317.  
  318. @Subsection<Getting HELP>
  319.  
  320. @Begin<Description>
  321.  
  322. @index[CTL-_]CTL-_@\will enter  the  built-in on-line  HELP  menu.   A
  323. number (not a function  key!)  will select  another node, delete  will
  324. retreat to  the  last  node, @index[ESC,  as  used  in  HELP]<ESCAPE>,
  325. @index[SPACE, as used  in HELP] <SPACE>  or @index[CTL-G]<CTL-G>  will
  326. abort the HELP menu, and  return to your work.  If  @index[CTL-_]CTL-_
  327. doesn't work,  try  @index[CTL-G]CTL-G  @index[CTL-_]CTL-_.   If  this
  328. doesn't   work,    start    praying.     @index[HELP]    @index[Menus]
  329. @index[Aborting]
  330. @index[QUIT]
  331.  
  332. @End<Description>
  333.  
  334. @Subsection<Aborting with QUIT>
  335.  
  336. @Begin<Description>
  337.  
  338. @index[CTL-G]CTL-G@\will abort any function and return you to the main
  339. editing  mode.  You  can   then  ask  for   help,  exit  the   editor,
  340. etc.@index[Aborting] @index[QUIT]
  341.  
  342. @End<Description>
  343.  
  344. @Subsection<Moving the cursor>
  345.  
  346. MAX  offers  cursor  movements  by  character,  line,  word,  sentence,
  347. paragraph, page, screen and file.
  348.  
  349. @Begin<Description>
  350.  
  351. Character@\@index[CTL-F]CTL-F@\will advance  the  cursor to  the  next
  352. character (@i<Forward>).  If you are at the end of a line, the  cursor
  353. will move to the start of the next line. If you are at the end of  the
  354. file, @index[CTL-F]CTL-F will cause an error.@index[Cursor Right]
  355.  
  356. @\@index[CTL-B]CTL-B@\will retreat by one character (@i<Backward>). If
  357. you are  at the  start of  a line,the  cursor will  move to  the  last
  358. character of the previous line. If you  are at the start of the  file,
  359. @index[CTL-B]CTL-B will cause an error.@index[Cursor Left]
  360.  
  361. Line@\@index[CTL-N]CTL-N@\will  move  the  cursor  to  the  next  line
  362. (@index[Cursor Down]@i<Down>).  MAX  will to  move the  cursor to  the
  363. same column.  If the next line is shorter than the old line, MAX  will
  364. place the  cursor at  the end  of  this line.   If you  type  directly
  365. afterwards another @index[CTL-N]CTL-N ( or @index[CTL-P] CTL-P ),  MAX
  366. will try to  move to the  original column (where  your first CTL-N  or
  367. CTL-P started).  If you don't understand this, move the cursor to  the
  368. end  of  the  second-longest  line  in  your  text,  and  type  a  few
  369. @index[CTL-N]CTL-N.@*Typing  @index[CTL-N]CTL-N  on   the  last   line
  370. generates an error.
  371.  
  372. @\@index[CTL-P]CTL-P@\will  move  the  cursor  to  the  previous  line
  373. (@index[Cursor Up]@i<Up>).  Like  @index[CTL-N]CTL-N, MAX  will go  to
  374. the same column  on the  next line,  or any  line thereafter.   Typing
  375. @index[CTL-P]CTL-P on the first line will generate an error.
  376.  
  377. Word@\@index[ESC-B]ESC-B@\will move  the cursor  to the  start of  the
  378. previous word. A word starts after a <SPACE>, or on a new line, with a
  379. non-<SPACE> character.  @index[ESC-B]ESC-B on  the first  word of  the
  380. file generates an error.
  381.  
  382. @\@index[ESC-F]ESC-F@\will move the cursor to the start of the next
  383. word1.  @index[ESC-F]ESC-F on the last word of a file is illegal.
  384.  
  385. Paragraph@\@index<ESC-]>ESC-]@\will move the  cursor to  the start  of
  386. the next paragraph.  A  paragraph is text that  begins after an  empty
  387. line.  @index[ESC-[]ESC-[  in the  first  paragraph will  generate  an
  388. error.  NOT  IMPLEMENTED: USE  @index[CTL-R CTL-Q  CTL-M CTL-Q  CTL-J]
  389. CTL-R CTL-Q CTL-M CTL-Q.
  390.  
  391. @index[Paragraph]
  392.  
  393. @\@index[ESC-[]ESC-[@\will  move  the  cursor  to  the  start  of  the
  394. previous paragraph.   @index[ESC-[]ESC-[ at  the last  paragraph  will
  395. generate an  error.  NOT  IMPLEMENTED:  USE @index[CTL-S  CTL-Q  CTL-M
  396. CTL-Q CTL-J] CTL-S CTL-Q CTL-M CTL-Q CTL-J. @index[Paragraph]
  397.  
  398. Page@\@index<CTL-X ]> CTL-X ]@\will move the cursor to the previous ^L
  399. in the text.   NOT IMPLEMENTED:  USE @index[CTL-R  CTL-Q CTL-L]  CTL-R
  400. CTL-Q CTL-L.
  401.  
  402. @\@index[CTL-X []CTL-X [@\will move the cursor  to the next ^L in  the
  403. text.  NOT  IMPLEMENTED: USE  @index[CTL-S  CTL-Q CTL-L]  CTL-S  CTL-Q
  404. CTL-L.
  405.  
  406. Screen@\@index[CTL-V]CTL-V@\will move the cursor  to the start of  the
  407. next screen, and  update to  a new  screen.  If  you are  less than  a
  408. screenful away  from  the end  of  the file,  @index[ESC-V]ESC-V  will
  409. generate an error.
  410.  
  411. @\@index[ESC-V]ESC-V@\will  move  the  cursor  to  the  start  of  the
  412. previous screen, and update to a new  screen.  If you are less than  a
  413. screenful away from the start of  the file, a warning message will  be
  414. displayed. @index[Messages]
  415.  
  416. File@\@index[ESC->]ESC->@\will move the cursor to the end of your file.
  417. @index[Cursor End]
  418.  
  419. @\@index[ESC-<]ESC-<@\will move  the  cursor  to  the  start  of  your
  420. file.@index[Cursor Home]
  421.  
  422. @\@index[CTL-L]CTL-L@\will redraw the screen  with a centered  cursor.
  423. An argument to  @index[CTL-L]CTL-L allows to  specify on which  screen
  424. line the cursor should appear on.  @index[CTL-L]CTL-L does not  really
  425. move the  cursor,  but it  allows  you to  see  it from  a  "different
  426. angle."@index[Arguments to CTL-L]
  427.  
  428. Others@\@index[CTL-X  CTL-X]CTL-X  CTL-X@\will  exchange  cursor  and  mark.   The
  429. cursor will be  moved to the  position where your  mark was, the  mark
  430. will be moved to the old cursor position. This comes in very handy  to
  431. check the boundaries of your region.
  432.  
  433. @End<Description>
  434.  
  435. @Subsection<Deleting, Killing, Moving Text>
  436.  
  437. There are two different  ways of erasing  text.  Deleting will  simply
  438. throw away text.  Killing will save the erased text in the @index[Yank
  439. Buffer] Yank-Back Buffer , and allow you to put it back into your file
  440. at any location.  In MAX, killing  allows you to delete, move or  copy
  441. lines, words, or even blocks of text.@index[Region] The idea is always
  442. the same: you kill some of your text, and yank it back elsewhere.   To
  443. erase text, simply do not use @index[CTL-Y] CTL-Y; to move text, go to
  444. the  place  where   you  want   to  move   your  text   to,  and   use
  445. @index[CTL-Y]CTL-Y;   to   copy   text   to   new   location(s),    do
  446. @index[CTL-Y]CTL-Y directly after your @index[CTL-K]CTL-K to place the
  447. killed text back to its  original place.  Now you  have a copy of  the
  448. text to copy  in your yankback  buffer.  Move your  cursor to the  new
  449. location(s),    and    type    @index[CTL-Y]CTL-Y    again.    Voi-la.
  450. @index[Killing]
  451.  
  452. Since there is only one yank-back buffer, be careful with new killing.
  453. Doing another kill will probably erase your previous yank-back buffer,
  454. loosing whatever you killed before. There will be no way to regain the
  455. old killed text.  In some future version, there might be more than one
  456. buffer,  but  for  the  time  being   you  will  have  to  live   with
  457. one.@index[Yank Buffer]
  458.  
  459. @BEGIN<DESCRIPTION>
  460.  
  461. @index[CTL-D]CTL-D@\will delete the character at the cursor  position.
  462. It can also be used to delete empty lines, or to merge two consecutive
  463. lines. @index[CTL-D]CTL-D is illegal at the end of the file.
  464.  
  465. @index[CTL-H]CTL-H@\(Backspace) will rubout  the last character,  i.e.
  466. the character directly before the cursor position.  This is useful for
  467. correcting text  "on  the  run," like  typos.   @index[CTL-H]CTL-H  is
  468. essentially  the   same  as   @index[CTL-B]CTL-B   @index[CTL-D]CTL-D.
  469. @index[BACKSPACE] <BACKSPACE>, as CTL-H is often called, on the  start
  470. of the  file is  illegal.  Note  that @index[CTL-H]CTL-H  assumes  the
  471. function of EMACS' <DEL>.@index[DEL, to "backspace"] @index[EMACS]
  472.  
  473. All of the following functions will  kill text, i.e. place the  erased
  474. text into the yankback buffer. @index[Killing]
  475.  
  476. @index[ESC-D]ESC-D@\will    kill    the    word    to    the    right.
  477. @index[ESC-D]ESC-D at the end of the file is illegal.
  478.  
  479. ESC-BS@\will kill the word  to the left.  ESC-BS  at the start of  the
  480. file is illegal. @index[ESC-BS] @index[ESC-DEL]
  481.  
  482. @index[CTL-W]CTL-W@\will kill  the  region.   The  region  is  defined
  483. dynamically as all text between the  cursor and the mark.  (Marks  can
  484. be  set   with  @index[CTL-@@]CTL-@@.)@index[Mark(ing   the   Region)]
  485. @Index[Region] @index[blocks] Region commands are used to delete, move
  486. or copy  entire  blocks of  text.   It  is recommended  that  you  use
  487. @index[CTL-X CTL-X]CTL-X CTL-X to check the static boundaries of  your
  488. region before actually using @index[CTL-W]CTL-W.  This is because both
  489. mark and cursor change continuously during your editing session  while
  490. you insert or delete text.
  491.  
  492. @index[CTL-K]CTL-K@\will kill everything from the cursor to the end of
  493. the line.  If  you are  on an  empty line,  the line  will be  closed.
  494. @index[CTL-K] CTL-K is the most widely used command to quickly kill or
  495. move text.   @index[CTL-K]  @u{CTL-K  is exceptional  in  so  far,  as
  496. directly consecutive  (and only  directly consecutive)  CTL-Ks do  not
  497. replace the text in the yank-back buffer, but add to it.}  @index[Yank
  498. Buffer]
  499.  
  500. @index[ESC-K] ESC-K@\allows adding text via @index[CTL-K]CTL-K to  the
  501. yank  buffer  after   you  have  issued   some  commands  other   than
  502. @index[CTL-K]CTL-K (  which usually  means  your yank-back  buffer  is
  503. closed ).
  504.  
  505. @index[CTL-Y]CTL-Y@\will yank  back  the  last killed  object  at  the
  506. cursor position.  You  can yank-back  the  same object  a  few  times,
  507. creating multiple copies of text at multiple places.
  508.  
  509. @End<Description>
  510.  
  511. @Subsection<Searching and/or Replacing Text>
  512.  
  513. MAX's search is incremental, i.e.  text is already searched while  you
  514. are entering your search string  or commands.  Among the commands  are
  515. the options to  search for control-characters,  to reverse the  search
  516. direction, or to include  a wildcard character.  The search is  always
  517. not case-sensitive ! @index[Case Sensitivity]@index[Wildcard Character]
  518.  
  519. @Begin<Description>
  520.  
  521. @index[CTL-S]CTL-S@\will search for a string while you enter it.
  522.  
  523. @index[CTL-R]CTL-R@\will search backward ( @i[reverse] ).
  524.  
  525. @i<Subcommands>@\@index[CTL-Q]CTL-Q@\will  quote  a  character.   This
  526. allows searching for  control characters  in your text  ( e.g.   CTL-Q
  527. CTL-L will look for a ^L in your document ).
  528.  
  529. @\@index[CTL-G]CTL-G@\will abort  the  search  (NOT  IMPLEMENTED:  and
  530. place your  cursor where  you started  your search  ).@index[Aborting]
  531. @index[QUIT]
  532.  
  533. @\@index[CTL-S]CTL-S@\If you  are searching  in reverse  direction,  a
  534. @index[CTL-S] CTL-S will  change the  search direction.   If you  just
  535. started a search  with @index[CTL-S]CTL-S, another  @index[CTL-S]CTL-S
  536. will search  for nother  occurance of  the same  string.
  537.  
  538. @\@index[CTL-R]CTL-R@\Analogous to @index[CTL-S]CTL-S, but reverse.
  539.  
  540. @\@index[CTL-J]CTL-J@\will  match  any  character  (  @i[wildcard]  ).
  541. @index[Wildcard  Character]   For   instance,   @index[CTL-S]CTL-S   A
  542. @index[CTL-J]CTL-J B will find AAB, ABB, ACB, etc.
  543.  
  544. @\Other commands will abort the search, and interprete the command  as
  545. a  normal   MAX   command.  A   good   way   to  end   a   search   is
  546. @index[CTL-L]CTL-L, which will abort the search and simply redraw  the
  547. screen.@index[Aborting] @index[QUIT]
  548.  
  549. @\@index[ESC-X  S]ESC-X  S@\"Search  and  Replace"  @index[Search  and
  550. Replace] will search for all occurences  of string 1 after the  cursor
  551. position, and replace  it with  string 2. Note  that string  1 is  not
  552. case-sensitive, so all occurances  of string 1,  no matter whether  in
  553. lower or uppercase, will  be replaced. ESC-X S  will first prompt  you
  554. for string 1,  which may  contain @index[CTL-J]CTL-Js  ( the  wildcard
  555. character ).  Then it will prompt you for string 2.  This command  may
  556. take some time, so please be patient. @index[Case Sensitivity]
  557.  
  558. @\@index[ESC-X Q]ESC-X  Q@\"Query  Search and  Replace,"  @index[Query
  559. Search and  Replace] similar  to "Search  and Replace,"  but asks  for
  560. confirmation  at  each  occurrence  of  string  1.   Hitting   <SPACE>
  561. @index[SPACE, as  used in  Query Replace]  will substitute  string  2,
  562. <DEL>  @index[DEL,  to  overskip  in  Query  Replace]  will  skip  the
  563. substitution,  and  @index[CTL-G]  CTL-G  will  abort.@index[Aborting]
  564. @index[ESC-X Query Search And Replace$] @index[QUIT]
  565. @index[Confirmations]
  566.  
  567. @End<Description>
  568.  
  569. @Subsection<Using Macros>
  570.  
  571. Macros are  a powerful  way to  customize your  editor, and  to  avoid
  572. entering common keystroke sequences repeatedly.
  573.  
  574. @BEGIN<Description>
  575.  
  576. @index[CTL-X  (]CTL-X  (@\will  start  the  macro  definition.   Every
  577. character you  type hereafter  will  be recorded  until you  stop  the
  578. definition, or  cause an  error, or  overflow the  macro-buffer (  255
  579. characters  ).   Note  that  @i<DEF>  @index[DEF,  displayed  on   the
  580. Modeline] appears on the modeline, reminding you that you are defining
  581. a macro. @index[Macro Buffer] @index[Macros]
  582.  
  583. @index[CTL-X )]CTL-X )@\will stop  the macro definition.  The  @i<DEF>
  584. on the modeline will disappear, and you can now invoke your macro.
  585.  
  586. @index[CTL-X E]CTL-X E@\will invoke  the macro.  Every character  that
  587. you typed during the definition will be "played back," just as if  you
  588. typed it.  When MAX detects an  error, it will automatically stop  the
  589. macroinvocation. For  instance,  if you  are  at the  second  to  last
  590. character  in  the  file,  and  your  macro  does   @index[CTL-K]CTL-K
  591. @index[CTL-D]CTL-D  HELLO,  MAX  would   detect  an  error   executing
  592. @index[CTL-D]CTL-D, and  abort  the macro,  never  actually  inserting
  593. HELLO.@index[Aborting]   @index[Error    Messages]    @index[Messages]
  594. @index[QUIT]
  595.  
  596. @\A powerful feature of MAX are arguments to macros.  @index[Arguments
  597. to Macros] For example, you could give simulate @i[search and replace]
  598. by defining a  macro that will  search for a  string, then rubout  the
  599. string, and insert another.  Finally you could invoke this macro  with
  600. @index[CTL-n] CTL-50000 @index[CTL-X E]  CTL-X E.  MAX replaces  until
  601. there  are  no   more  occurrences,   or  until   it  reaches   50,000
  602. replacements.   Some   macro   invocations  can   take   quite   long.
  603. @index[CTL-G]CTL-G will interrupt macroexecutions. @index[Macros]
  604.  
  605. @End<Description>
  606.  
  607. @Subsection<Using Buffers and Windows>
  608.  
  609. MAX allows you to  edit several files, or  multiple copies of the  same
  610. file during one session without exiting or saving to disk.
  611.  
  612. Each buffer  @index[Buffers] holds  one file  (maximum  64K),@index[64K
  613. Limit] just like a pad may have several @Faecher.  Only one buffer can
  614. be active at  a time,  i.e.  you can  only edit  the currently  active
  615. buffer ( just like you  can only open one page  in your pad ). A  good
  616. example for using buffers would be  writing a letter in one  document,
  617. and the envelope in another.@index[Buffer Space Limit]
  618.  
  619. There is basically only one  operation with buffers, namely  switching
  620. to  it.  The  new  buffer  will  be  selected  (becomes  active),  the
  621. previously active buffer becomes passive.
  622.  
  623. @BEgin<Description>
  624.  
  625. @index[CTL-X   B]CTL-X   B@\will   display   a   menu   of   available
  626. buffers,@index[Buffers] and  prompt  you  for  the  new  buffer.   MAX
  627. expects a  number within  the  range of  available buffers,  and  will
  628. activate    this     buffer.     @index[CTL-G]CTL-G     aborts     the
  629. selection.@index[Aborting] @index[Menus] @index[QUIT]
  630.  
  631. @index[CTL-X CTL-B]CTL-X  CTL-B@\will switch  to the  buffer that  was
  632. active immediately  before  the  currently  active  buffer.  It  is  a
  633. convenient way  to  quickly  toggle  between  two  buffers.
  634.  
  635. @End<Description>
  636.  
  637. Each buffer can hold a file with up to 64KB of text.@index[64K  Limit]
  638. @index[Buffer Space Limit] When you  start MAX, MAX will load  buffers
  639. with their default files, and activate buffer 1.  Presently,  WORK.TXT
  640. @index[WORK.TXT] is default in  buffer 1 and 2;  other buffers do  not
  641. load default files.@index[Defaults]
  642.  
  643. A window is the place on the screen that your buffer is displayed  on.
  644. Sometimes it is convenient to see one buffer, while really working  on
  645. another. This is called split editing. Think of a window as  reminders
  646. in a pad that allow  you to really see  two @Faecher (buffers) at  the
  647. same time. You can have  two windows, each of  which can hold its  own
  648. index[Buffers], or the same buffer. You can arrange them as follows:
  649.  
  650. @Begin<Verbatim>
  651.  
  652.  /-------------\     /-------------\     /-------------\
  653. |        |    |        |    | Window 1    |
  654. |  Window 1    |    | Window 2    |    |---------------|
  655. |        |    |        |    | Window 2 |
  656.  \-------------/     \-------------/     \-------------/
  657.  
  658. @End<Verbatim>
  659.  
  660. Apparently you could also toggle buffers to achieve the same result as
  661. the two  first figures.   The real  interesting gain  from buffers  is
  662. sketched in figure three: Your cursor is in one of those windows,  and
  663. editing just as  normal, but  uses only  half the  screen.  The  other
  664. window remains statically unchanged, allowing you to look at it.
  665.  
  666. You want to be able to switch the cursor from one window to the other,
  667. to split up the screen into two windows, and to go back to  one-window
  668. mode.
  669.  
  670. @BEgin<Description>
  671.  
  672. CTL-X 1@\will toggle the number of windows concurrently on the  screen
  673. ( one or two ).@index[CTL-X 1]
  674.  
  675. CTL-X 2@\identical with CTL-X 1.@index[CTL-X 2]
  676.  
  677. CTL-X O@\will toggle active and  passive window. The cursor will  move
  678. into the new active window.  If this window is not on the screen,  the
  679. previous window will disappear and the new window will overlay the old
  680. window.@index[CTL-X O]
  681.  
  682. @End<Description>
  683.  
  684. @Subsection<Saving, Loading and Exiting>
  685.  
  686. @Begin<Description>
  687.  
  688. CTL-X CTL-S@\@b<s>aves the contents of the active index[Buffers] under
  689. its  old  name  to  disk,  and  marks  the  buffer  "unmodified."   An
  690. unmodified buffer  does  not display  a  "*" ("dirty")  as  the  first
  691. character on the modeline.@index[Dirty, see "Modified"] @index["*" (to
  692. mark modified buffers)] @index[CTL-X  CTL-S] @index [Modified  Buffer]
  693. @index[Unmodified  Buffer]  @index[Modified  Buffer]  @Index[Saving  a
  694. Buffer to Disk] @Index[Disk, writing to and reading from disk]
  695.  
  696. CTL-X CTL-W@\allows the  contents of the  active index[Buffers] to  be
  697. @b<w>ritten to a new file on disk, thus preserving the contents of the
  698. old file.  The  new name  becomes the  default for  all further  CTL-X
  699. CTL-S. CTL-X  CTL-W will  prompt you  for the  new filename  (  Escape
  700. recognition will work!  ).@index[CTL-X CTL-W] @index[Writing a  Buffer
  701. to Disk] @index[Defaults]
  702.  
  703. CTL-X CTL-V@\will @b<v>isit a file from disk in the current buffer. It
  704. will prompt you for the name of  a file. If no such file exists,  only
  705. the name is noted ( for further  CTL-X CTL-S ). In this case, a  "[NEW
  706. FILE]"  message   will  appear   on  the   screen.@index{[NEW   FILE]}
  707. @index[Messages] If the file exists, you  can attempt to use <ESC>  to
  708. complete unique filenames,@Index[Filenames]  but only  if these  files
  709. are in the currently connected directory.   If there is more than  one
  710. file available to match the input up to this point, a beep will sound.
  711. If   there   is   no   such   file   at   all,   CTL-X   CTL-V    will
  712. abort.@index[Aborting] @index[QUIT] If only one such file exists,  the
  713. rest of the name  will be filled  in at the  promptline.  You can  now
  714. press <RETURN> to load this file.  CTL-X CTL-V will return an error if
  715. the file is longer  than 63K ( which  virtually no normally used  file
  716. will exceed.  Longer applications  are usually realized with  separate
  717. compilations or similar facilities. The  64K limit is enforced to  use
  718. the 8088s'  power  to  the largest  possible  extent  ).@index[Segment
  719. Limits, see also 64K  Limit] @index[Buffer Space Limit]  @index[Escape
  720. Recognition] @index[CTL-X CTL-V]  @index[64K Limit] @index[Visiting  a
  721. File]
  722.  
  723. CTL-X CTL-Z@\will exit to DOS after additional confirmation ( CTL-Y ).
  724. @index[Aborting]   @index[QUIT]    @index[DOS]    @index[Confirmations]
  725. @index[CTL-X CTL-Z] @index[CTL-Y as Confirmation] @index[QUIT]
  726.  
  727. @End<Description>
  728.  
  729. @Subsection<Using other built-in functions>
  730.  
  731. Following is a listing of commands which have not yet been  discussed,
  732. some  of  which  can  not  be  found  in  the  standard  DEC-20  EMACS
  733. @index[EMACS] implementation.
  734.  
  735. @Begin<Description>
  736.  
  737. CTL-X D@\will prompt for a directory mask, and display the DOS directory
  738. of files on the disk.@index[Directory]@Index[DOS]@index[CTL-X CTL-D]
  739. @index[ CTL-X D]
  740.  
  741. CTL-Z@\will  scroll   the   screen  up   by   one   line.@index[CTL-Z]
  742. @index[Scrolling]
  743.  
  744. ESC-Z@\will scroll down the screen by one line.@index[ESC-Z] This  and
  745. the above  function  can  be conveniently  accessed  by  CTL-PgUP  and
  746. CTL-PgDn.@index[CTL-PgUp] @index[CTL-PgDn]
  747.  
  748. ESC-Q@\will fill the paragraph, which means it will break all lines in
  749. the current paragraph which are longer than the fillcolumn, s.t.  they
  750. are as long  as permitted. Lines  that are short  enough to hold  more
  751. words are merged with  the next line. Words  will never be broken  up.
  752. @index[Fill  Paragraph]   @index[Linebreaking]  @index[Fill   Column]
  753. @index[Paragraph]
  754.  
  755. CTL-X F@\allows setting  the fill  column using  an argument.   ESC-70
  756. CTL-X F  will set  the maximum  length  of a  line on  a fill  to  70.
  757. @index[CTL-X F] @index[Fill Column] @index[Arguments to CTL-X F]
  758.  
  759. ESC-U@\@index[ESC-U] will uppercase the  previous word ( i.e.  convert
  760. all its characters to uppercase ).@index[Uppercasing a Word]
  761.  
  762. ESC-C@\@index[ESC-C] will capitalize the previous work ( i.e.  convert
  763. the first  letter  to  uppercase,  and  all  others  to  lowercase  ).
  764. @index[Capitalizing a Word]
  765.  
  766. Arguments@\Most functions accept arguments. An argument usually  means
  767. that a command is repeated n  times. To give an argument, use  <ESC>-n
  768. or CTL-U n ( the  two are equivalent ) where  n is a number, and  then
  769. simply issue the command. For example,  CTL-U 10 CTL-N will move  down
  770. 10 lines.@index[Arguments]
  771.  
  772. @\Some functions interpret arguments differently. Two commands come to
  773. mind: CTL-L, CTL-Q and CTL-X F.  An argument to CTL-L will center  the
  774. cursor on line n on the screen; an argument to CTL-Q will allow you to
  775. insert n controlcharacters without typing  CTL-q in front of each;  an
  776. argument  to  CTL-X   F  will  set   the  fillcolumn.    @index[CTL-l]
  777. @indEx[Arguments to  CTL-L] @Index[CTL-L]  @Index[Arguments to  CTL-L]
  778. @index[Arguments]  @index[CTL-U]  @Index[ESC-n<umber>]  @index[Literal
  779. Mode] @index[CTL-X F] @index[Arguments to CTL-X F] @index[Fill Column]
  780. @index[ESC-Q]
  781.  
  782. CTL-X CTL-_@\will create a cross-reference of a valid help-file  which
  783. is in the active buffer @index[Buffers], and dump it into the previous
  784. buffer.  @b<Please note that MAX will crash if you attempt to run this
  785. function without a  valid help-file  ! In particular,  make sure  that
  786. nodenames are properly terminated.> @index[HELP file]  @index[Indexing
  787. a Help  File] @index[CTL-X  CTL-_] @index[Cross  Reference of  a  Help
  788. File] @Index[Crashes, because of CTL-X CTL-_]
  789.  
  790. @End<Description>
  791.  
  792. @Subsection<Explanation of Commands by Keystroke>
  793.  
  794. Please refer to the index.
  795.  
  796. @Section<Some Differrences of MAX and EMACS> @index[EMACS]
  797.  
  798. @Tabset<20>
  799. @Begin<Description>
  800.  
  801. Default Files:@\On startup,  MAX will  attempt to load  the first  two
  802. files which are specified at the DOS command line into buffers #1  and
  803. #2. If no file was specified, MAX will load the file WORK.TXT into the
  804. first two buffers @index[Buffers].   Buffers #3 to  #7 will always  be
  805. initialized   to   (   but   not   loaded   with   )   the    filename
  806. FOO.BAR.@index[Default     Files]     @index[Defaults]     @index[DOS]
  807. @index[WORK.TXT]
  808.  
  809. Messages:@\After loading, MAX will display the number of buffers,  the
  810. space free for holding killed text,@Footnote[The number of buffers and
  811. the free space for killed text is determined by all free memory  above
  812. the program] and a  message indicating whether it  could load a  file.
  813. Note that for  two new files  in buffers 1  and 2 you  should get  two
  814. @i{[NEW  FILE]}   messages.  Loading   one   file  into   one   buffer
  815. @index[Buffers], but  none into  the  other will  still give  you  one
  816. initial @i{[NEW FILE]}  message.  @Index[Messages] @index{[NEW  FILE]}
  817. @index[Kill  Space]  @index[Buffers,  Number  Of  Available   Buffers]
  818. @index[Memory Usage] @index[RAM Usage]
  819.  
  820. Mark:@\On startup, MAX will set the mark on the first character of the
  821. file.@index[Mark(ing the Region)]@index[Region]
  822.  
  823. Exit:@\Since forks are  not kept  ( or in  UNIX terms:  "pids are  not
  824. stopped" ),  MAX  asks  for confirmation  (CTL-Y)  before  exiting  to
  825. DOS.@index[Confirmations] @Index[CTL-Y as Confirmation] @index[DOS]
  826.  
  827. Escape Recognition:@\Hitting <ESC> when MAX prompts you for a filename
  828. will force MAX to  attempt completing it. Note  that this can only  be
  829. done if  the filename  is unique,  and never  for a  directory-name  !
  830. @index[Escape Recognition] @index[ESC, as used in filename completion]
  831. @index[Filenames]  @index[DOS]  @index[Uniqueness  of  Filenames  (for
  832. Escape Recognition)]
  833.  
  834. Find File:@\Find File is unfortunately not yet implemented.@index[Find
  835. File] @index[CTL-X CTL-F]
  836.  
  837. Buffer Space:@\Buffer Space is  restricted to 64K.@index[Buffer  Space
  838. Limit] @Index[64K Limit]
  839.  
  840. Buffer Switching:@\CTL-X B  will prompt a  menu of available  buffers,
  841. and allow you  to choose  one by typing  a number.   CTL-X CTL-B  will
  842. switch previous and current buffer in the current window. @index[CTL-X
  843. B] @index[CTL-X  CTL-B]  @index[Buffers, Toggling  Buffers,  see  also
  844. CTL-X CTL-B] @index[Menus]
  845.  
  846. Windows:@\Only two windows are  permitted.  C-X 1  or CTL-X 2  toggles
  847. windows.@index[Windows, Toggling Windows, see also CTL-X 1 or CTL-X 2]
  848. @index[CTL-X 1]
  849. @index[CTL-X 2]
  850.  
  851. Lastline:@\MAX  offers  both  EMACS-like  @index[EMACS]  commands  and
  852. menu-entry.  The menu system will appear on the bottom of the  screen.
  853. Pressing the key will result in the corresponding action being  taken.
  854. By my convention, choices leading to other menus are uppercased, while
  855. editor commands are lowercased.@index[Menus] @index[Uppercase, as used
  856. in  Menus]  @index[Last  Line   on  Screen]  Modeline:@\The   modeline
  857. constantly  updates  date  and  time.   @index[Modeline]  @index[Date,
  858. displayed on the Modeline] @index[Time, displayed on the Modeline]
  859.  
  860. Messages@\Messages generally stay on the screen for about 15 seconds (
  861. unless new messages appear  ). Error messages  are usually in  reverse
  862. video.@index[Messages] @index[Error Messages]
  863.  
  864. @skip<2>
  865.  
  866. Help:@\The help menu is actually a finite state language  interpreter.
  867. The file MAX.HLP ( which must be either in the connected directory  or
  868. in \MAX\DOC ) is interpreted as a menu, and action can be taken by the
  869. user to slide down the graph.  Nodes are diskaddresses, and  therefore
  870. one has to carefully adjust new diskaddresses after modifying the help
  871. menu ( use MAX to  do so !  ).  There  is a built-in function (  CTL-X
  872. CTL-_ ) which will calculate the  new diskaddresses of all nodes,  and
  873. report it  to  the  other buffer  (  but  may crash  the  editor  upon
  874. syntactically invalid help files ).  This function makes modifying the
  875. help menu considerably easier.  MAX  searches for its help file  first
  876. in the connected directory and then  in \MAX\DOC. MAX does not  expect
  877. functionkeys, but numbers as choices! DEL will retreat to the previous
  878. node, ESC, SPACE or  CTL-G will abort.@index[SPACE,  as used in  HELP]
  879. @index[Aborting] @index[QUIT] Please refer to  the section on Help  in
  880. this   manual.@index[HELP]    @index[CTL-X   CTL-_]    @index[MAX.HLP]
  881. @index[MAX\DOC] @index[Diskaddresses, as  used in HELP]  @index[Finite
  882. State  HELP  Language]  @index[Default  Directories]  @index[Defaults]
  883. @index[DOS] @Index[Crashes,  because of  CTL-X CTL-_]  @index[DEL,  to
  884. abort  HELP]  @index[Numbers,   as  used  to   select  HELP   options]
  885. @index[Options,  as  used  in  Help]  @index[ESC,  as  used  in  HELP]
  886. @index[SPACE, as used in HELP] @index[Cross Reference of a Help  File]
  887. @index[Help] @index[Menus]
  888.  
  889. Macros:@\The execution of a macro will not turn off display  updating.
  890. One can see the macro working.   The advantage is that one can  simply
  891. stop a macro with a long argument at any chosen time using CTL-G.  The
  892. disadvantage is a 2% loss of speed.@index[Macros]
  893.  
  894. Search & Replace:@\Search  and Replace  is invoked by  ESC-X S,  Query
  895. Search and Replace by ESC-X Q.@index[Search and Replace]  @index[ESC-X
  896. Search and  Replace$]  Please refer  to  the proper  section  of  this
  897. manual.
  898.  
  899. Fill:@\Fill  will  not   take  an   argument  to   justify.@index[Fill
  900. Paragraph] @index[CTL-X F] @index[ESC-Q]
  901.  
  902. Scrolling:@\CTL-Z and ESC-Z  will scroll  the display one  line up  or
  903. down.@index[CTL-Z] @index[ESC-Z] @index[Scrolling]
  904.  
  905. @skip<3>
  906. Bugs:@\Some minor  bugs  have  appeared, none  of  them  fatal.   Most
  907. disappear  from  the  screen  immediately  after  simple  and  obvious
  908. corrective action is taken.@index[Bugs]
  909.  
  910. @End<Description>
  911.  
  912. MAX, Copyright (C) Ivo Welch, Jan. 1985.
  913.  
  914. @Chapter<Advanced Topics>
  915.  
  916. @Section<How to modify the Editor Help Menu>
  917.  
  918. @Section<About the Internal Structure of the Editor>
  919.  
  920. @Subsection<Easy Customization>
  921.  
  922. Please look at  DEFS.H to  modify certain  standard definitions  (i.e.
  923. last-line  displayed  on  power  up,  display  used,  original  macro,
  924. original file names to be loaded etc.).
  925.  
  926. @Subsection<Major Datastructures>
  927.  
  928. BCB stands for Buffer Control Block,  and is located in the first  256
  929. bytes of each Buffer. Its definition can be found in DEFS.H. Among the
  930. more important fields of the BCB is the cursor position, the  position
  931. of the cursor on the screen, the  mark, the FCB that allows saving  or
  932. loading the buffer to disk, etc. As  an example, to set the cursor  to
  933. the start of the buffer, use the command:
  934.  
  935.     mov    DS:BCB.FCursor, 100h
  936.  
  937. where DS is the 64K segment  that holds our buffer, BCB the  structure
  938. definition, and FCursor the address of the cursor in the field.
  939.  
  940. @Subsection<The Function Jump Tables>
  941.  
  942. @Subsection<The Screen Definition>
  943.  
  944. Please fgrep for SCR if  you wish to find out  points where I have  to
  945. write to the screen.
  946.  
  947. @Subsection<The OS interface>
  948.  
  949. @Subsection<Ading a New Function>
  950.  
  951. @Paragraph<Error Trapping>
  952.  
  953. If an error should be displayed, DX should be set to the offset of  an
  954. ascii string,  CX  should  contain  its  length.   Control  should  be
  955. transferred to  .Error0,  which  will reset  stack,  macro  and  other
  956. pointers  to  their   original  state  at   invocation,  display   the
  957. errormessage, and sound a beep.@index[Error Messages] @index[Messages]